home *** CD-ROM | disk | FTP | other *** search
/ Libris Britannia 4 / science library(b).zip / science library(b) / ASTRNOMY / AA_51.ZIP / OMARS.C < prev    next >
C/C++ Source or Header  |  1993-02-13  |  2KB  |  106 lines

  1. /* Orbital elements and perturbations for the planet Mars
  2.  * using formulas given by Meeus
  3.  */
  4. #include "planet.h"
  5. #include "kep.h"
  6.  
  7.  
  8. int omars(e,J)
  9. struct orbit *e;
  10. double J;
  11. {
  12. double p;
  13.  
  14. e->epoch = J;
  15. manoms(J);
  16.  
  17. e->M = M4;
  18. e->a = 1.5236883;
  19. e->ecc = ( -0.000000077*T + 0.000092064)*T + 0.09331290;
  20. #if OFDATE
  21. e->equinox = J;
  22. e->i = ( 0.0000126*T - 0.0006750)*T + 1.850333;
  23. f = ((0.00000414*T + 0.0001313)*T + 1.0697667)*T + 285.431761;
  24. e->w = mod360(f);
  25. f = (( -0.00000533*T - 0.0000014)*T + 0.7709917)*T + 48.786442;
  26. e->W = mod360(f);
  27. f = ( 0.0003107*T + 19141.69551)*T + 293.737334;
  28. e->L = mod360(f);
  29. #else
  30. e->equinox = J2000;
  31. e->i = ((-4.4e-8*T - 0.00002304)*T - 0.0081565)*T + 1.857866;
  32. f = ((6.939e-6*T + 0.00046556)*T + 0.7387251)*T + 285.762379;
  33. e->w = mod360(f);
  34. f = (( -8.159e-6*T - 0.00064344)*T - 0.2941821)*T + 49.852347;
  35. e->W = mod360(f);
  36. f = e->M + e->w + e->W;
  37. e->L = mod360(f);
  38. #endif
  39.  
  40. /* long period perturbation */
  41. f = (3.0*M5 - 8.0*M4 + 4.0*M)*DTR;
  42. p = -0.01133*sin(f)
  43.     -0.00933*cos(f);
  44. e->L += p;
  45. e->M += p;
  46. return(0);
  47. }
  48.  
  49.  
  50.  
  51.  
  52. int cmars(e)
  53. struct orbit *e;
  54. {
  55. double f, p;
  56.         
  57. f = (M5 - M4 - 48.958)*DTR;
  58. p =  0.00705*cos(f);
  59. f = (2.0*M5 - M4 - 188.350)*DTR;
  60. p += 0.00607*cos(f);
  61. f = (2.0*M5 - 2.0*M4 - 191.897)*DTR;
  62. p += 0.00445*cos(f);
  63. f = (M - 2.0*M4 + 20.495)*DTR;
  64. p += 0.00388*cos(f);
  65. f = (M - M4 + 35.097)*DTR;
  66. p += 0.00238*cos(f);
  67. f = (2.0*M - 3.0*M4 + 158.638)*DTR;
  68. p += 0.00204*cos(f);
  69. f = (3.0*M4 - M2 - 57.602)*DTR;
  70. p += 0.00177*cos(f);
  71. f = (2.0*M - 4.0*M4 + 154.093)*DTR;
  72. p += 0.00136*cos(f);
  73. f = (M5 + 17.618)*DTR;
  74. p += 0.00104*cos(f);
  75. e->L += p*DTR;
  76.         
  77. f = (M5 - M4 + 41.1306)*DTR;
  78. p = 0.000053227*cos(f);
  79. f = (2.0*M5 - 2.0*M4 - 101.9847)*DTR;
  80. p += 0.000050989*cos(f);
  81. f = (2.0*M5 - M4 - 98.3292)*DTR;
  82. p += 0.000038278*cos(f);
  83. f = (M - M4 - 55.555)*DTR;
  84. p += 0.000015996*cos(f);
  85. f = (2.0*M - 3.0*M4 + 68.622)*DTR;
  86. p += 0.000014764*cos(f);
  87. f = (M5 - 2.0*M4 + 43.615)*DTR;
  88. p += 0.000008966*cos(f);
  89. f = (3.0*M5 - 2.0*M4 - 139.737)*DTR;
  90. p += 0.000007914*cos(f);
  91. f = (2.0*M5 - 3.0*M4 - 102.888)*DTR;
  92. p += 0.000007004*cos(f);
  93. f = (M - 2.0*M4 + 113.202)*DTR;
  94. p += 0.000006620*cos(f);
  95. f = (3.0*M5 - 3.0*M4 - 76.243)*DTR;
  96. p += 0.000004930*cos(f);
  97. f = (3.0*M - 5.0*M4 + 190.603)*DTR;
  98. p += 0.000004693*cos(f);
  99. f = (2.0*M - 4.0*M4 + 244.702)*DTR;
  100. p += 0.000004571*cos(f);
  101. f = (3.0*M5 - M4 - 115.828)*DTR;
  102. p += 0.000004409*cos(f);
  103. e->r += p;
  104. return(0);
  105. }
  106.